﻿<?xml version="1.0" encoding="utf-8" ?>
<schema
		xmlns="http://www.w3.org/2001/XMLSchema"
		xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
		xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
		targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
		blockDefault="#all"
		elementFormDefault="qualified"
		attributeFormDefault="unqualified"
		xml:lang="en">

	<!-- Schema documentation -->
	<annotation>
		<documentation>
			This schema describes MAML, the Microsoft Assistance Markup Language.
			MAML is intended for software documentation. In particular, it is
			intended to accomodate the needs of Microsoft documentation.
		</documentation>
		<documentation>
			The schema is broken into three main areas: end user, developer and
			IT Pro. These areas adequaltely categorize Microsoft
			documentation.
		</documentation>
		<documentation>
			The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
			Each backwards-incompatible revision to Maml will require that the date fields be appropriately
			incremented in uri of the updated version of the Maml schema.
		</documentation>
	</annotation>

	<annotation>
		<documentation>
			This portion of the schema was created by alexstoc in April 2003.
		</documentation>
	</annotation>
	<import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="../xml.xsd"/>
	<include schemaLocation="baseConditional.xsd"/>
	<include schemaLocation="inline.xsd"/>
	<include schemaLocation="block.xsd"/>
	<include schemaLocation="structure.xsd"/>

	<!-- ***************************************************************** -->
	<complexType name="singleParagraphSimpleContentType">
		<sequence>
			<element ref="maml:para" minOccurs="0"/>
		</sequence>
	</complexType>

	<element name="summary" type="maml:singleParagraphSimpleContentType">
		<annotation>
			<documentation>
				This element contains a summary, introduction, or short description of the current item.
				This text typically appears in a topic and may also be used as the description of the topic
				that appears in a jump table when the topic is being linked to.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<element name="remarks" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element contains a detailed discussion of the current item.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<element name="legacy" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element holds legacy content that has not been subdivided
				into elements according to the latest standards.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<element name="comments" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element holds a general discussion.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>
	<complexType name="codeType">
		<choice>
			<element ref="maml:code"/>
			<element ref="maml:codeReference"/>
		</choice>
	</complexType>
	<group name="codeExampleContentsGroup">
		<sequence>
			<element ref="maml:description" minOccurs="0"/>
			<group   ref="maml:codeGroup" minOccurs="1" maxOccurs="unbounded"/>
			<!-- This is to allow a single example with equivalent code in multiple languages -->
			<element ref="maml:comments" minOccurs="0"/>
			<element name="input" type="maml:codeType" minOccurs="0"/>
			<element name="output" type="maml:codeType" minOccurs="0"/>
			<element name="sampleOutput" type="maml:codeType" minOccurs="0"/>
		</sequence>
	</group>

	<complexType name="codeExampleType" mixed="false">
		<choice>
			<element ref="maml:legacy"/>
			<!-- TODO: review use of element to hold legacy content -->
			<group   ref="maml:codeExampleContentsGroup"/>
		</choice>
	</complexType>

	<element name="codeExample" type="maml:codeExampleType">
		<annotation>
			<documentation>
				This element holds a discussion of a code example.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<complexType name="codeExamplesType" mixed="false">
		<sequence>
			<element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>

	<element name="codeExamples" type="maml:codeExamplesType">
		<annotation>
			<documentation>
				This element is a collection of codeExample elements.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>
	<element name="buildInstructions" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element holds instructions for building a code example.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>
	<element name="robustProgramming" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element holds a discussion of error handling and other
				issues related to writing solid code.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<element name="security" type="maml:namedSectionType">
		<annotation>
			<documentation>
				This element holds a discussion of security issues.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<complexType name ="legacySyntaxType" mixed="true">
		<choice minOccurs="0" maxOccurs="unbounded">
			<!--<element name="legacyItalic" type="maml:textType"/>-->
			<element ref="maml:parameterReference" />
			<element name="legacyBold" type="maml:textType"/>
			<element ref="maml:legacyLink"/>
			<element ref="maml:legacyUnderline"/>
		</choice>
		<attribute name="language" type="maml:devLanguagesType"/>
		<attribute ref="xml:space"/>
	</complexType>

	<element name="legacySyntax" type="maml:legacySyntaxType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>false</doc:localizable>
				<doc:type>block</doc:type>
			</appinfo>
		</annotation>
	</element>

	<complexType name="syntaxSectionType" mixed="false">
		<sequence>
			<element ref="maml:sections" minOccurs="0" maxOccurs="1"/>
			<element ref="maml:legacySyntax" minOccurs="1" maxOccurs="unbounded"/>
		</sequence>
	</complexType>

	<element name="syntaxSection" type="maml:syntaxSectionType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

	<complexType name="schemaHierarchyType" mixed="false">
		<sequence>
			<element ref="maml:link" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="schemaHierarchy" type="maml:schemaHierarchyType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>
	<complexType name="attributesType" mixed="true">
		<choice>
			<element ref="maml:para"/>
			<element ref="maml:table"/>
		</choice>
	</complexType>
	<complexType name="attributeType" mixed="true">
		<sequence>
			<element name="title" type="maml:textType"/>
			<element ref="maml:table"/>
		</sequence>
	</complexType>
	<element name="attribute" type="maml:attributeType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>false</doc:localizable>
				<doc:type>block</doc:type>
			</appinfo>
		</annotation>
	</element>
	<complexType name="attributesandElementsType" mixed="true">
		<sequence>
			<element ref="maml:para"/>
			<element name="attributes" type="maml:attributesType"/>
			<element ref="maml:attribute" minOccurs="0" maxOccurs="unbounded"/>
			<element name="childElement" type="maml:attributesType"/>
			<element name="parentElement" type="maml:attributesType"/>
		</sequence>
	</complexType>
	<element name="attributesandElements" type="maml:attributesandElementsType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>false</doc:localizable>
				<doc:type>block</doc:type>
			</appinfo>
		</annotation>
	</element>
	<complexType name="tableType" mixed="false">
		<sequence>
			<element ref="maml:table"/>
		</sequence>
	</complexType>
	<element name="elementInformation" type="maml:tableType">
		<annotation>
			<documentation>
				This element holds syntax obtained from a converted document.
			</documentation>
			<appinfo>
				<doc:localizable>n/a</doc:localizable>
				<doc:type>section</doc:type>
			</appinfo>
		</annotation>
	</element>

</schema>
